1
Introducción a los Agentes de Resolución de Problemas
PolyU COMP5511Clase 2
00:00

Del Reflejo a la Planificación

En la evolución del diseño de agentes, pasamos de Agentes Reactivos, que mapean las percepciones directamente a acciones basadas en reglas simples (por ejemplo, “Si el coche de delante frena, iniciar frenado”), a Agentes de Resolución de Problemas. Los agentes reactivos operan con el contexto inmediato, mientras que los agentes de resolución de problemas están orientados a Objetivos. Consideran las consecuencias futuras de sus acciones para encontrar una secuencia que satisfaga un objetivo específico.

  • Agente Reactivo: $Acción = Función(Percepción)$
  • Agente de Planificación: $Secuencia\_de\_Acciones = Búsqueda(Estado, Objetivo)$

La Representación de Estado Atómico

A este nivel fundamental, los agentes utilizan una Representación Atómica. Esto significa que el estado del mundo se trata como una caja negra: un nodo singular sin estructura interna visible para el algoritmo de búsqueda. El agente solo razona sobre:

  • Estados ($S$): Instantáneas del entorno.
  • Acciones ($A$): Transiciones entre estados.
  • Prueba de Objetivo: Una comprobación booleana si el estado $s \in S_{objetivo}$.

El Bucle de Resolución de Problemas

Un agente de resolución de problemas sigue un ciclo distintivo de cuatro pasos para navegar por el entorno:

  1. Formulación del Objetivo: Decidir qué objetivo perseguir basándose en la situación actual.
  2. Formulación del Problema: Abstraer el mundo real en un modelo matemático (Estados y Acciones).
  3. Búsqueda: Simular secuencias de acciones para encontrar el camino óptimo.
  4. Ejecución: Realizar las acciones encontradas durante la fase de búsqueda sin más deliberación (asumiendo un entorno estático).
Implementación en Python (agent_types.py)
1
class ReflexAgent:
2
defact( self, percept):
3
# Mapeo directo: Regla -> Acción
4
return rules.get(percept, default_action)
5
6
class ProblemSolvingAgent:
7
def__init__( self):
8
self.seq = [] # Secuencia de acciones en búfer
9
10
defact( self, percept):
11
# Si estamos en medio de la ejecución, continuamos
12
ifself.seq:
13
returnself.seq.pop( 0 )
14
15
# De lo contrario, Planificar (Buscar)
16
state = self.update_state(percept)
17
goal = self.formulate_goal(state)
18
problem = self.formulate_problem(state, goal)
19
20
# La búsqueda devuelve una lista de acciones
21
self.seq = search_algorithm(problem)
22
23
returnself.seq.pop( 0 )